// lib/screens/home/home_screen.dart
// 包含帖子列表和社区列表

import 'package:flutter/material.dart';
import 'package:flutter_bluebell/screens/home/widgets/community_list_widget.dart';
import 'package:flutter_bluebell/screens/home/widgets/post_list_item_widget.dart';
import '../../api/community_api.dart'; // 导入 CommunityApi
import '../../models/community.dart'; // 导入 Community 模型
import '../../models/post.dart'; // 假设你有一个 Post 模型
import '../../routes/app_routes.dart'; // 帖子列表项组件


class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final TextEditingController _searchController = TextEditingController();
  final CommunityApi _communityApi = CommunityApi(); // 实例化 CommunityApi
  // final PostApi _postApi = PostApi(); // 实例化 PostApi (假设存在)

  List<Community> _communities = []; // **类型改为 Community 模型**
  List<Post> _posts = []; // **类型改为 Post 模型**
  bool _isLoadingCommunities = true;
  bool _isLoadingPosts = true;

  int? _selectedCommunityId; // **新增：记录当前选中的社区ID**

  @override
  void initState() {
    super.initState();
    _fetchCommunities();
    _fetchPosts(); // 首次加载所有帖子
  }

  Future<void> _fetchCommunities() async {
    setState(() {
      _isLoadingCommunities = true;
    });
    try {
      final response = await _communityApi.getCommunities();
      if (response.code == 1000) {
        setState(() {
          _communities = response.data ?? [];
        });
      } else {
        // 可以显示SnackBar或日志
        print('获取社区列表失败: ${response.msg}');
      }
    } catch (e) {
      print('获取社区列表异常: $e');
    } finally {
      setState(() {
        _isLoadingCommunities = false;
      });
    }
  }

  Future<void> _fetchPosts({int? communityId}) async { // **修改：增加 communityId 参数**
    setState(() {
      _isLoadingPosts = true;
    });
    try {
      // 模拟API调用：根据 communityId 获取帖子
      await Future.delayed(const Duration(seconds: 1)); // 模拟网络延迟

      // **TODO: 实际应调用 PostApi.getPosts(communityId: communityId);**
      // if (_postApi != null) {
      //   final response = await _postApi.getPosts(communityId: communityId);
      //   if (response.code == 1000) {
      //     setState(() {
      //       _posts = response.data ?? [];
      //     });
      //   } else {
      //     print('获取帖子列表失败: ${response.msg}');
      //   }
      // } else {
      //   print('PostApi 未初始化');
      // }

      // 模拟数据 (替换为实际的API调用结果)
      if (communityId != null) {
        // 模拟筛选特定社区的帖子
        _posts = [
          {'id': 'p101', 'title': '社区${communityId}专属帖1', 'content': '内容...', 'likes': 50, 'comments': 10, 'communityId': communityId},
          {'id': 'p102', 'title': '社区${communityId}专属帖2', 'content': '内容...', 'likes': 30, 'comments': 5, 'communityId': communityId},
        ].map((json) => Post.fromJson(json)).toList(); // 模拟数据转为 Post 模型
      } else {
        // 模拟获取所有帖子
        _posts = [
          {'id': 'p1', 'title': 'Flutter状态管理最佳实践', 'content': '内容...', 'likes': 10, 'comments': 5},
          {'id': 'p2', 'title': '如何在日常生活中保持积极心态', 'content': '内容...', 'likes': 25, 'comments': 8},
          {'id': 'p3', 'title': '新游戏发布，体验分享', 'content': '内容...', 'likes': 15, 'comments': 3},
          {'id': 'p4', 'title': '健身打卡，坚持就是胜利', 'content': '内容...', 'likes': 30, 'comments': 12},
          {'id': 'p5', 'title': '周末探店，这家餐厅太好吃了', 'content': '内容...', 'likes': 20, 'comments': 7},
        ].map((json) => Post.fromJson(json)).toList(); // 模拟数据转为 Post 模型
      }

    } catch (e) {
      print('获取帖子列表异常: $e');
    } finally {
      setState(() {
        _isLoadingPosts = false;
      });
    }
  }

  void _onSearch() {
    // 实现搜索逻辑，调用 GET /api/v1/select
    print('搜索内容: ${_searchController.text}');
    // **TODO: 调用 PostApi 的搜索方法**
    // _fetchPosts(query: _searchController.text);
  }

  void _onCommunityTap(int? communityId) { // **新增：社区卡片点击事件处理函数**
    setState(() {
      _selectedCommunityId = communityId; // 更新选中社区ID
    });
    if (communityId != null) {
      print('点击了社区ID: $communityId，重新加载该社区的帖子');
      _fetchPosts(communityId: communityId); // 获取特定社区的帖子
    } else {
      print('点击了所有社区，重新加载所有帖子');
      _fetchPosts(); // 获取所有帖子
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('首页'),
        actions: [
          IconButton(
            icon: const Icon(Icons.add),
            onPressed: () {
              Navigator.of(context).pushNamed(AppRoutes.publishPostScreen);
            },
          ),
        ],
      ),
      body: RefreshIndicator(
        onRefresh: () async {
          _selectedCommunityId = null; // 刷新时重置选中社区
          await _fetchCommunities();
          await _fetchPosts();
        },
        child: Column(
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: TextField(
                controller: _searchController,
                decoration: InputDecoration(
                  hintText: '搜索帖子或社区...',
                  prefixIcon: const Icon(Icons.search),
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.circular(20.0),
                  ),
                  suffixIcon: IconButton(
                    icon: const Icon(Icons.clear),
                    onPressed: () => _searchController.clear(),
                  ),
                ),
                onSubmitted: (_) => _onSearch(),
              ),
            ),
            const Divider(),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8.0),
              child: Align(
                alignment: Alignment.centerLeft,
                child: Text(
                  '热门社区',
                  style: Theme.of(context).textTheme.titleLarge,
                ),
              ),
            ),
            const SizedBox(height: 8),
            // **将社区列表直接嵌入，并传递点击回调**
            _isLoadingCommunities
                ? const Center(child: CircularProgressIndicator())
                : CommunityListWidget(
              communities: _communities,
              onCommunityTap: _onCommunityTap, // 传递回调函数
              selectedCommunityId: _selectedCommunityId, // 传递选中状态
            ),
            const Divider(),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8.0),
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  Text(
                    _selectedCommunityId == null ? '最新帖子' : '社区帖子', // 根据选中社区显示标题
                    style: Theme.of(context).textTheme.titleLarge,
                  ),
                  if (_selectedCommunityId != null) // 如果有选中社区，显示“全部帖子”按钮
                    TextButton(
                      onPressed: () => _onCommunityTap(null), // 点击显示所有帖子
                      child: const Text('全部帖子'),
                    ),
                ],
              ),
            ),
            const SizedBox(height: 8),
            _isLoadingPosts
                ? const Center(child: CircularProgressIndicator())
                : Expanded(
              child: _posts.isEmpty
                  ? const Center(child: Text('暂无相关帖子'))
                  : ListView.builder(
                itemCount: _posts.length,
                itemBuilder: (context, index) {
                  final post = _posts[index];
                  return PostListItemWidget(
                    post: post,
                    onTap: () {
                      Navigator.of(context).pushNamed(
                        AppRoutes.postDetailScreen,
                        arguments: post.postId, // 传递帖子ID
                      );
                    },
                  );
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}